package managedBeans;

import java.io.Serializable;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;

import entidades.Usuario;
import usuarioejb.UsuarioEJBRemote;




@ManagedBean (name = "MBUser")
@SessionScoped
public class MBUser implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    
    @EJB (name = "UEJB", mappedName = "UEJB")
    UsuarioEJBRemote uejb;
    
    @ManagedProperty(value = "#{MBCarro}")
    MBCarro MBcarro;
    
    private String user;
    private String name;
    private String lastName;
    private String pass;
    private String passconfirm;
    private Usuario usuario;
    private List<Usuario> ListU;
    private int count;
    
    @PostConstruct
    public void init(){
        usuario = new Usuario();
        setCount(5);
    }

    public MBUser(){
        
    }
    
    
    /*checkea si el usuario ya existe en la BD, si no existe
     * lo agrega a la BD
     */
    public String RegUser(){
            Usuario checkUser = uejb.ObtenerUser(usuario.getUsername());
            if (checkUser == null){
            uejb.AddUser(usuario);
            init();
            return "regsuccesful";
            } else {
            return "register";    
            }
         
    }

    
    
    /*este es el metodo de login, checkea dentro de la base de datos
     * si existe primero el user, si existe ese username, entonces
     *  compara la pass obtenida con la pass en la BD 
     */
    public String LoginUser(){
        Usuario checkUser = uejb.ObtenerUser(usuario.getUsername());
            if (checkUser.getPassUser().equals(usuario.getPassUser())){
                return "loginsuccesful";
            } else {
                return "loginfailed";
            }
        }
       
    /*Envia la informacion del nombre del usuario al MB de carro
     * y luego redirige a la pagina de inicio
     */
    public String SendInfo(){
        MBcarro.getCarro().setUsuario(usuario.getNombreUser());
        return "index";
    }
    
    
    //------------------ getters and setters 
    
    
    public UsuarioEJBRemote getUejb() {
        return uejb;
    }

    public void setUejb(UsuarioEJBRemote uejb) {
        this.uejb = uejb;
    }

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public List<Usuario> getListU() {
        return ListU;
    }

    public void setListU(List<Usuario> listU) {
        ListU = listU;
    }

    public static long getSerialversionuid() {
        return serialVersionUID;
    }

    public String getPassconfirm() {
        return passconfirm;
    }

    public void setPassconfirm(String passconfirm) {
        this.passconfirm = passconfirm;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    public MBCarro getMBcarro() {
        return MBcarro;
    }

    public void setMBcarro(MBCarro mBcarro) {
        MBcarro = mBcarro;
    }
  
}
